package org.liang.job.beans;

import java.util.Date;

import org.liang.common.utils.date.DateBase;

/**
 * 触发器实体.
 *
 * @author L.Yang
 * @version 1.0, 2015年10月20日
 */
public class TriggerInfo {

    /** 任务编号. */
    private String jobId;

    /** 任务标题. */
    private String title;
    
    /** 任务组编号. */
    private String jobGroup;
    
    /** 任务组名. */
    private String jobGroupName;
    
    /** 触发器 名称. */
    private String triggerName;

    /** 触发器 组 . */
    private String triggerGroup;

    /** 触发器 组名 . */
    private String triggerGroupName;

    /** 触发器 优先级. */
    private String priority;

    /** 触发器 状态. */
    private String triggerState;

    /** 上次 触发时间 . */
    private Date prevFireTime;

    /** 下次 触发时间 . */
    private Date nextFireTime;

    /** 开始 时间. */
    private Date startTime;

    /** 结束 时间. */
    private Date endTime;

    /**
     * 获取 任务编号.
     * 
     * @return the jobId
     */
    public String getJobId() {
        return jobId;
    }

    /**
     * 设置 任务编号.
     * 
     * @param jobId
     *            the jobId to set
     */
    public void setJobId(String jobId) {
        this.jobId = jobId;
    }
    
    /**
     * 获取  title.
     * @return 返回   title
     */
    public String getTitle() {
        return title;
    }

    /**
     * 设置  title.
     * @param title the title to set
     */
    public void setTitle(String title) {
        this.title = title;
    }

    /**
     * 获取  任务组编号.
     * @return 返回   jobGroup
     */
    public String getJobGroup() {
        return jobGroup;
    }

    /**
     * 设置  任务组编号.
     * @param jobGroup the jobGroup to set
     */
    public void setJobGroup(String jobGroup) {
        this.jobGroup = jobGroup;
    }

    /**
     * 获取  任务组名.
     * @return 返回   jobGroupName
     */
    public String getJobGroupName() {
        return jobGroupName;
    }

    /**
     * 设置  任务组名.
     * @param jobGroupName the jobGroupName to set
     */
    public void setJobGroupName(String jobGroupName) {
        this.jobGroupName = jobGroupName;
    }

    /**
     * 获取 触发器 名称.
     * 
     * @return the triggerName
     */
    public String getTriggerName() {
        return triggerName;
    }

    /**
     * 设置 触发器 名称.
     * 
     * @param triggerName
     *            the triggerName to set
     */
    public void setTriggerName(String triggerName) {
        this.triggerName = triggerName;
    }

    /**
     * 获取 触发器组.
     * 
     * @return the triggerGroup
     */
    public String getTriggerGroup() {
        return triggerGroup;
    }

    /**
     * 设置 触发器 组.
     * 
     * @param triggerGroup
     *            the triggerGroup to set
     */
    public void setTriggerGroup(String triggerGroup) {
        this.triggerGroup = triggerGroup;
    }

    /**
     * 获取 触发器 组名.
     * 
     * @return the triggerGroupName
     */
    public String getTriggerGroupName() {
        return triggerGroupName;
    }

    /**
     * 设置 触发器 组名.
     * 
     * @param triggerGroupName
     *            the triggerGroupName to set
     */
    public void setTriggerGroupName(String triggerGroupName) {
        this.triggerGroupName = triggerGroupName;
    }

    /**
     * 获取 优先级.
     * 
     * @return the priority
     */
    public String getPriority() {
        return priority;
    }

    /**
     * 设置 优先级.
     * 
     * @param priority
     *            the priority to set
     */
    public void setPriority(String priority) {
        this.priority = priority;
    }

    /**
     * 获取 触发器 状态.
     * 
     * @return the triggerState
     */
    public String getTriggerState() {
        return triggerState;
    }

    /**
     * 设置 获取 触发器 状态.
     * 
     * @param triggerState
     *            the triggerState to set
     */
    public void setTriggerState(String triggerState) {
        this.triggerState = triggerState;
    }

    /**
     * 获取 上次 触发时间.
     * 
     * @return the prevFireTime
     */
    public Date getPrevFireTime() {
        return instanceDate(prevFireTime);
    }

    /**
     * 获取 上次 触发时间.
     * 
     * @param pattern
     *            日期显示格式
     * @return the prevFireTime
     */
    public String getPrevFireTime(String pattern) {
        return formatDate(prevFireTime, pattern);
    }

    /**
     * 获取 上次 触发时间.<br>
     * user default pattern {@link DateBase.DATE_PATTERN_DATETIME}
     * 
     * @return the prevFireTime
     */
    public String getPrevFireTimeDef() {
        return formatDate(prevFireTime, DateBase.DATE_PATTERN_DATETIME);
    }

    /**
     * 设置 上次 触发时间.
     * 
     * @param prevFireTime
     *            the prevFireTime to set
     */
    public void setPrevFireTime(Date prevFireTime) {
        this.prevFireTime = instanceDate(prevFireTime);
    }


    /**
     * 获取 下次 触发时间.
     * 
     * @return the nextFireTime
     */
    public Date getNextFireTime() {
        return instanceDate(nextFireTime);
    }

    /**
     * 获取 下次 触发时间.
     * 
     * @param pattern
     *            日期显示格式
     * @return the nextFireTime
     */
    public String getNextFireTime(String pattern) {
        return formatDate(nextFireTime, pattern);
    }

    /**
     * 获取 下次 触发时间.<br>
     * user default pattern {@link DateBase.DATE_PATTERN_DATETIME}
     * 
     * @return the nextFireTime
     */
    public String getNextFireTimeDef() {
        return formatDate(nextFireTime, DateBase.DATE_PATTERN_DATETIME);
    }

    /**
     * 设置 下次 触发时间.
     * 
     * @param nextFireTime
     *            the nextFireTime to set
     */
    public void setNextFireTime(Date nextFireTime) {
        this.nextFireTime = instanceDate(nextFireTime);
    }

    /**
     * 获取 开始时间.
     * 
     * @return the startTime
     */
    public Date getStartTime() {
        return instanceDate(startTime);
    }

    /**
     * 获取 开始时间.
     * 
     * @param pattern
     *            日期显示格式
     * @return the startTime
     */
    public String getStartTime(String pattern) {
        return formatDate(startTime, pattern);
    }

    /**
     * 获取 开始时间.<br>
     * user default pattern {@link DateBase.DATE_PATTERN_DATETIME}
     * 
     * @return the startTime
     */
    public String getStartTimeDef() {
        return formatDate(startTime, DateBase.DATE_PATTERN_DATETIME);
    }

    /**
     * 设置 获取 开始时间.
     * 
     * @param startTime
     *            the startTime to set
     */
    public void setStartTime(Date startTime) {
        this.startTime = instanceDate(startTime);
    }

    /**
     * 获取结束时间.
     * 
     * @return the endTime
     */
    public Date getEndTime() {
        return instanceDate(endTime);
    }

    /**
     * 获取结束时间.
     * 
     * @return the endTime
     */
    public String getEndTime(String pattern) {
        return formatDate(endTime, pattern);
    }

    /**
     * 获取结束时间.<br>
     * user default pattern {@link DateBase.DATE_PATTERN_DATETIME}
     * 
     * @return the endTime
     */
    public String getEndTimeDef() {
        return formatDate(endTime, DateBase.DATE_PATTERN_DATETIME);
    }

    /**
     * 获取结束时间，如果无结束时间，则为 '-' .
     * 
     * @param endTime
     *            the endTime to set
     */
    public void setEndTime(Date endTime) {
        this.endTime = instanceDate(endTime);
    }

    /**
     * 获取日期类型.
     * 
     * @param date
     *            日期值
     * @return 如果日期不为空 则创新新的
     */
    private Date instanceDate(Date date) {
        return (date == null ? null : new Date(date.getTime()));
    }

    /**
     * 格式化日期.
     * 
     * @param date
     *            日期对象
     * @param pattern
     *            格式
     * @return 格式化的字符串
     */
    private static String formatDate(Date date, String pattern) {
        return date == null ? "—" : DateBase.formatDate(date, pattern);
    }
}
